This application includes subject matter related to co-pending application entitled: xe2x80x9cApparatus and Method for generating a print job from a series of commands describing multiple copies of a documentxe2x80x9d 10981933-1 and is referred to herein as the ""933 application. That application is incorporated by reference herein, assigned to the same assignee as this application and filed on even date herewith.
There are many types of computing devices capable of generating or handling a document in an electronic form. For purposes of this application, such devices are generally referred to herein as xe2x80x9cdocument processing devicesxe2x80x9d. Examples of document processing devices include personal computers, facsimile machines, digital cameras, digital copiers, optical scanners, medical imaging devices, satellite imaging devices and scientific data collection devices.
A typical printing system includes a document processing device and a printer connected over a communication link. The document processing device includes a software application (e.g., a word processing application) and a print driver. In order to generate a document in an electronic form, a user provides input (via some sort of user input device) to the software application (executing on the document processing device). To print the document, the user inputs a print request to the application. The application responds to this input by causing a series of commands describing the document to be transmitted to the print driver. For purposes of this application, the commands transmitted to the print driver may be referred to herein as xe2x80x9cdevice driver interfacexe2x80x9d (DDI) commands or alternatively as the DDI command stream. The data used to represent a DDI command may be referred to herein as DDI command data.
It is often the case that a user has a need to print multiple collated copies of a document. Many printing systems exist today to provide a user with the ability to use one of two techniques to satisfy this need. First, the user can cause the document processing device to generate multiple print jobs, each print job describing only a single copy of the document. The print jobs (as they are generated) are transmitted sequentially over a communication link to a printer, thereby causing the printer to print the desired number of copies. Unfortunately, this first technique can result in a large amount of data having to be processed (both by the document processing device and by the printer) and a large amount of xe2x80x9cprint dataxe2x80x9d having to be transmitted over the communication link. As a result, this first technique can result in printing delays and data transfer bandwidth problems. It is noted that the phrase xe2x80x9cprint dataxe2x80x9d refers to electronic data in any form that is used to describe a document. Print data, for example, may be expressed in Printer Control Language (PCL), PostScript(copyright) (PostScript is a trademark of Adobe Systems Incorporated) or as a raster bitmap.
In a second technique, a user causes the document processing device to generate a single print job describing a single copy of the document. The print job is then transmitted once to the printer for printing. After the single copy is printed, the user then retrieves it from the printer and makes use of a photocopier to generate the additional copies desired. Unfortunately, this second technique typically requires the purchase, operation and maintenance of a photocopier. This represents an added expense beyond that of owning and maintaining a printer. Furthermore, user productivity is also reduced as the user must transport the original printed copy to the photocopier and must also spend time operating the photocopier. Also, the quality of the copies generated from a photocopier will typically be below that of the original document printed from the printer.
To solve the problems mentioned above, printing systems have been developed that allow for multiple copies of a document to be printed from a single transmission of a print job. The print job includes a single command (indicating the number of copies that are to be printed) followed by print data (describing a single copy of the document). Printers that are able to receive this type of print job are described in the patent entitled MULTIPLE ORIGINAL COPY DATA PRINTER, having U.S. Pat. No. 5,764,863. That patent is incorporated by reference. The technology described in that patent may be referred to as xe2x80x9cTOPAZxe2x80x9d. TOPAZ is an acronym for xe2x80x9ctransmit once, print a zillionxe2x80x9d. Prior art printers incorporating the TOPAZ technology are able to accept print jobs that include print data and a command, referred to herein as a xe2x80x9ccopy_countxe2x80x9d command. The phrase xe2x80x9ccopy_countxe2x80x9d command refers to any command in a print job that indicates the number of copies that are to be printed. This number may be referred to herein as the xe2x80x9ccopy count valuexe2x80x9d.
For purposes of this discussion, a print job that includes a command indicating the number of times the print data in the print job is to be printed is referred to herein as a xe2x80x9cmopy print jobxe2x80x9d (mopy is an acronym for xe2x80x9cmultiple original printsxe2x80x9d). A printer able to receive a mopy print job may be referred to herein as a xe2x80x9cmopy printerxe2x80x9d. A print driver that is able to generate a mopy print job may be referred to herein as a xe2x80x9cmopy print driverxe2x80x9d.
As is known in the art, prior art mopy print jobs typically include setup commands that preface the print data. These setup commands can be expressed, for example, in Printer Job Language (PJL). For purposes of this application, the set of commands that preface the print data in a print job is referred to herein as the xe2x80x9cpreamble sectionxe2x80x9d of the print job. Any commands that occur after the print data is referred to as the xe2x80x9ctrailer sectionxe2x80x9d of the print job.
It is known in the art that prior art mopy printers require the copy_count command to be in the preamble section of the print job. This, therefore, requires the document processing device to transmit the copy_count command prior to transmitting the print data in a mopy print job to the printer. As a result, the number of copies that will be printed becomes fixed prior to the printer receiving the print data. This can be disadvantageous in situations wherein it would be desirable to determine or to update the copy count value during or after the transmission of the print data.
In order for a prior art mopy print driver to properly generate a mopy print job, it must receive a suitable set of DDI commands. For ease of discussion, such a set of DDI commands is referred to herein as a xe2x80x9cmopy enabledxe2x80x9d set of DDI commands. Typically, a mopy enabled set of DDI commands will include a DDI command indicating the number of copies that are to be printed, DDI commands that describe only a single copy of the document and DDI commands describing any desired finishing information (e.g., a DDI command indicating each copy is to be stapled). A mopy print driver receives these commands and generates the mopy print job. The mopy print job having a command indicating the number of copies that are to be printed, additional commands indicating finishing information and print data describing only a single copy of the document.
Unfortunately, some applications (referred to herein as xe2x80x9cnon-MOPY applicationsxe2x80x9d) are not designed to generate a mopy enabled set of DDI commands. To illustrate the problems a non-MOPY application can cause, consider the DDI commands listed in Table 1. The DDI commands in table 1 provide an example of a DDI command stream provided to a mopy print driver from a non-mopy application. In this example, it is assumed that the document being converted into a print job is a two page document and the user has requested (via input to the non-mopy application) two printed copies.
It can be seen that the DDI commands listed in Table 1 describe two copies of the two page document. Unfortunately, however, the commands describing each copy of the document are in an xe2x80x9cundifferentiated formxe2x80x9d. That is to say, there is no indication where the first set of DDI commands describing the first copy ends and the next set of DDI commands describing the second copy begins. Furthermore, there is no indication that more than one copy of the document is to be printed. For purposes of this discussion, such a DDI command stream is referred to herein as an xe2x80x9cundifferentiated command streamxe2x80x9d. In addition, each set of DDI commands describing a single copy of the document is referred to herein as a xe2x80x9csingle copy command setxe2x80x9d.
Upon receiving an undifferentiated command stream, a typical prior art mopy print driver generates a single print job. The print job includes a command indicating one copy is to be printed followed by print data describing two copies of the document. The print job is then transmitted to the printer for printing. As a result, twice as much print data is transmitted to the printer for printing than that required to describe the document. As indicated above, this can cause data transfer bandwidth problems and printing delays. Of course this problem gets worse as the number of copies the user requests to be printed increases.
In addition, certain finishing operations that require knowledge of copy boundaries may be applied incorrectly during the printing operation. For example, if the DDI commands listed in table 1 further described a stapling operation, the resulting print job may cause the printer to generate two printed copies of the document with all four of the pages stapled together.
In one embodiment, a printer is provided that comprises a means for receiving a print job. The print job includes a preamble section, print data describing a document and a trailer section. The preamble section includes a first command indicating the print data is to be stored. The trailer section includes a second command indicating a first number of document copies are to be printed. The printer further comprises a memory, means for responding to the first command by storing the print data into the memory and means for responding to the second command by using the print data to print a second number of copies of the document.
In another embodiment a document processing device is provided comprising means for generating a document in an electronic form and means for converting the document into a print job, the print job including a preamble section. The preamble section includes a first command. The print job further includes print data describing the document and a trailer section that includes a second command. The first command is for causing a printer to store the print data and the second command is for causing the printer to print a first number of copies.